package com.action;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.beans.StudentInfo;
import com.dao.StudentDao;
import com.utils.StrUtil;

@Controller @RequestMapping("/student")
public class StudentWordAction {
	@Resource
	private StudentDao studentDao;
	
	@RequestMapping("/download/{id}")
	public void downloadInsureFile(@PathVariable("id") Integer id, HttpServletRequest request, HttpServletResponse response) throws Exception {
		StudentInfo stu=studentDao.getOne(id);
		
		String path = saleInsurance(request ,stu);
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/msword");
		response.setHeader("Content-Disposition", "attachment; filename=" + "xxx.doc");
		
		File file = new File(path);
		InputStream in = new FileInputStream(file);
		OutputStream out = response.getOutputStream();
		byte[] b = new byte[10240];
		int length;
		while ((length = in.read(b)) > 0) {
			out.write(b, 0, length);
		}
		in.close();
		out.flush();
		out.close();
		file.delete();
		
	}

	public String saleInsurance(HttpServletRequest request,StudentInfo stu) throws Exception {
		String url = request.getSession().getServletContext().getRealPath("/") + "/admin/excel_template/"+ System.currentTimeMillis() + ".doc";
		String templateDoc = request.getSession().getServletContext().getRealPath("/admin/excel_template/m.docx");
		WordReporter export = new WordReporter(templateDoc);	
		export.init();
			
		Map<String, Object> map = new HashMap<String, Object>();
	
		map.put("姓名", stu.get姓名());
		map.put("年龄",stu.get年龄());
		map.put("性别",stu.get性别() );
		map.put("出生日期",  StrUtil.formatDate(stu.get出生日期()));
		map.put("年龄",stu.get年龄());
		map.put("最高学历",stu.get学历());
		map.put("民族",stu.get民族());
		map.put("语种",stu.get语种());	
		map.put("外语水平",stu.get外语级别());  
		map.put("籍贯",stu.get籍贯()); 
		map.put("户口所在地",stu.get户口所在地());
		map.put("政治面貌",stu.get政治面貌());
		map.put("QQ",stu.getQQ());
		map.put("身份证号码",stu.get身份证号 ()); 
		map.put("邮箱",stu.get邮箱()); 
		map.put("毕业学校",stu.get毕业学校());
		map.put("毕业时间", StrUtil.formatDate(stu.get毕业时间 ()));
		map.put("个人手机",stu.get电话());
		map.put("所学专业",stu.get专业());
		map.put("家庭住址",stu.get家庭住址());	
		map.put("爱好证书",stu.get其他证书());
		
		
		//如果有照片,要导出照片
		byte [] photoData=stu.get照片();
		if(photoData!=null) {
			ByteArrayInputStream bis=new ByteArrayInputStream(photoData);
			
			Map<String, Object> photoMap = new HashMap<String, Object>();
			photoMap.put("width", 105);
			photoMap.put("height", 124);
			photoMap.put("type", "jpg");
			photoMap.put("path", bis);
			map.put("photo", photoMap);
		}
		
		export.export(map,0);
	
		map.clear();
		map.put("联系人一", stu.get联系人一());
		map.put("一与本人关系", stu.get联系人一与本人关系());
		map.put("联系人一工作单位", stu.get联系人一工作单位());
		map.put("联系人一电话", stu.get联系人一电话());
		map.put("联系人二", stu.get联系人二());
		map.put("二与本人关系", stu.get联系人二与本人关系());
		map.put("联系人二工作单位", stu.get联系人二工作单位());
		map.put("联系人二电话", stu.get联系人二电话());
			
		export.export(map,1);
		map.clear();
		
		map.put("教育一时间起",  StrUtil.formatDate(stu.get教育一时间起 ()));
		map.put("教育一时间止", StrUtil.formatDate(stu.get教育一时间止()) );
		map.put("教育一院校名称" ,stu.get教育一院校名称() );
		map.put("教育一专业" ,stu.get教育一专业() );
		map.put("教育一学历" ,stu.get教育一学历() );
		map.put("教育一获奖情况" ,stu.get教育一获奖情况() );
		map.put("教育二时间起" , StrUtil.formatDate(stu.get教育二时间起()) );
		map.put("教育二时间止" , StrUtil.formatDate(stu.get教育二时间止 ()));
		map.put("教育二院校名称" ,stu.get教育二院校名称() );
		map.put("教育二专业" ,stu.get教育二专业() );
		map.put("教育二学历" ,stu.get教育二学历() );
		map.put("教育二获奖情况" ,stu.get教育二获奖情况() );
		export.export(map,2);	
		export.generate(url);
		
	    return url;			   
	}
		
}
